package com.ibeeking.found.job.service;

import com.ibeeking.found.job.model.BaseJobModel;
import com.ibeeking.found.job.model.JobInfoModel;
import com.ibeeking.found.job.model.JobStartStopModel;
import com.ibeeking.nematos.utils.result.ResponseResult;

import java.util.List;
import java.util.concurrent.Future;

/**
 * @ClassName IJobService
 * @Description
 * @Author ibeeking
 * @Date 2021-01-31 10:50
 **/
public interface IJobService {

    /**
     * 创建任务
     *
     * @param model
     * @return
     */
    Future<ResponseResult<Boolean>> createJob(JobInfoModel model);

    /**
     * 修改任务
     *
     * @param model
     * @return
     */
    Future<ResponseResult<Boolean>> modifyJob(JobInfoModel model);

    /**
     * 启动/停止任务
     *
     * @param model
     * @return
     */
    Future<ResponseResult<Boolean>> startStopJob(JobStartStopModel model);

    /**
     * 立即执行一次任务
     *
     * @param model
     * @return
     */
    Future<ResponseResult<Boolean>> executeOnceJob(BaseJobModel model);

    /**
     * 获取下次执行时间
     *
     * @param model
     * @return
     */
    Future<ResponseResult<List<String>>> nextJobTime(BaseJobModel model);

    /**
     * 删除任务
     *
     * @param model
     * @return
     */
    Future<ResponseResult<Boolean>> delJob(BaseJobModel model);
}
